home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 031-040 / amok32 / billard / billard.dok < prev    next >
Text File  |  1993-11-04  |  15KB  |  251 lines

  1. *********************************************************************
  2.  
  3. Dieses Billardspiel ist Shareware !!!
  4. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5. Es darf erst gespielt werden nach Zahlung von DM 5 oder $ 3 an:
  6.  
  7.                               Stefan Salewski
  8.                               Stolper Weg 3
  9.                               D-2160 Stade
  10.  
  11.                               Bankverbindung: Stadt-Sparkasse Stade
  12.                                               Bankleitzahl 24151005
  13.                                               Kontonummer: 823864
  14.  
  15. *********************************************************************
  16.  
  17. Da das Erstellen von guter Software nicht nur mit einem großen
  18. Zeitaufwand, sondern auch mit einigen Unkosten verbunden ist, und ich
  19. als Student keine Einnahmen habe, habe ich mich entschloßen, dieses
  20. Spiel im Gegensatz zu meinen bisherigen Werken nicht als
  21. Public-Domain, sondern als Shareware zu veröffentlichen. (Am Ende der
  22. Anleitung zu meinem Mathematikprogramm R.o.M.(AMOK#11) hatte ich
  23. bereits darum gebeten, daß mir diejenigen, die das Programm viel
  24. benutzen, eine kleine Spende zukommen lassen sollten. Das ist jetzt
  25. weit über ein Jahr her und bislang habe ich von Niemanden etwas
  26. erhalten.) Dieses Spiel ist also Shareware. Das bedeutet, daß alle
  27. Rechte an diesem Programm weiterhin bei mir liegen und daß es nur von
  28. Personen benutzt werden darf, die mir den Betrag von DM 5 ($3)
  29. geschickt bzw. auf mein Konto überwiesen haben. Befreit von dieser
  30. Sharewaregebühr sind alle Programmierer, die mindestens ein gutes
  31. Programm (was gut ist, muß jeder Programmierer selbst entscheiden)
  32. als PD oder Shareware veröffentlicht haben, und Herausgeber von
  33. PD-Serien und Diskmagazinen.
  34.  
  35. Jetzt zum eigentlichen Spiel: Die vorliegende Version läuft nur auf
  36. PAL-Amigas. (Für NTSC-Amigas müssen einige Konstanten geändert werden,
  37. und das Bild BillardTable muß natürlich auch angepaßt werden) Starten
  38. können Sie das Programm wie üblich durch Doppelklicken von der
  39. Workbench aus oder von CLI durch:"[run] Billard". Starten Sie das
  40. Programm von der Workbench, so muß sich in der gleichen Schublade, in
  41. der sich das Programm Billard befindet, auch das Bild BillardTable
  42. befinden. Beim Start von CLI muß das Bild BillardTable im aktuellen
  43. Directory vorhanden sein, andernfalls bricht das Programm ab. Nach
  44. kurzer Ladezeit und dem Hinweis, bitte die Sharewaregebühr zu
  45. bezahlen, sehen sie vor sich einen Billardtisch, auf dem momentan
  46. sieben Kugeln liegen. Um Mißverständnisse zu vermeiden, möchte ich nun
  47. einige Begriffe definieren:
  48.  
  49. Anklicken: Den Mauspfeil auf ein Objekt bewegen, die linke Maustaste
  50.            drücken und wieder loslassen.
  51. Gadget:    Oder auch Schalter, Taster.
  52.            Eines der 12 bzw. 13 Kästchen am unteren Bildschirmrand.
  53. Spielball: Die Billardkugel, die mit dem Stock (Queue) angestoßen wird.
  54. Bande:     Der Rahmen des Billardtisches, an dem die Kugeln abprallen
  55.            können.
  56. Queue:     Der Stock, mit dem eine Kugel angestoßen wird.
  57. Maus:      Rollkugeleingabegerät, mit welchen der Mauszeiger auf dem
  58.            Bildschirm bewegt wird. Mit Mausposition ist die Position des
  59.            Mauszeigers (Kreuz) auf dem Bildschirm gemeint.
  60.  
  61. Nun zum Spiel. Klicken Sie einen Ball an und bewegen Sie den Mauspfeil
  62. etwas. Wie sie sehen, wird von der Mitte des selektierten Balles zur
  63. aktuellen Mausposition jeweils eine Linie gezogen. Diese Linie
  64. symbolisiert den Billardqueue. Wenn Sie nochmals den linken Mausknopf
  65. drücken und wieder loslassen, wird die Kugel in die Richtung der Linie
  66. angestoßen, wobei die Anfangsgeschwindigkeit proportional zur Länge
  67. der Linie ist. Sobald die Kugeln zur Ruhe gekommen sind, können Sie
  68. auf die gleiche Weise eine weitere Kugel anstoßen.
  69.  
  70. Jetzt zu der Beschreibung der 13 Gadgets am unteren Bildschirmrand.
  71. Die Gadget können mit der Maus angeklickt werden und veranlassen dann
  72. eine bestimmte Reaktion. Danach kann sofort wieder normal
  73. weitergespielt werden. (Mit Ausnahme der Gadgets "Quit" und "Set",
  74. s.u.) Nun zu der Funktion der Gadget von links nach rechts:
  75.  
  76. Quit: Damit können Sie das Spiel beenden.
  77. Set:  Dieses Gadget hat eine gewisse Sonderstellung. Durch Anklicken
  78.       schalten Sie in einen anderen Modus, in dem Sie die Bälle
  79.       beliebig positionieren können. Sie wählen einen Ball durch
  80.       anklicken aus, verschieben ihn dann an die gewünschte Position
  81.       und legen ihn dort durch erneutes Klicken ab. Danach können Sie
  82.       mit dem nächsten Ball fortfahren. Sie können auch Bälle vom Rahmen
  83.       aufnehmen oder dort ablegen. Alle Bälle, die sich beim Beenden
  84.       dieses Modus auf dem Spielfeldrahmen befinden, werden
  85.       automatisch entfernt. Sie beenden diesen Modus durch erneutes
  86.       Anklicken des "Set"-Gadgets.
  87.  
  88. 0     Dieses Gadget räumt alle Bälle von Tisch.
  89. 7,11,16:Es werden 7, 11 oder 16 Bälle auf dem Tisch in einer
  90.       vorgegebenen Position aufgebaut. Außerdem werden die 5 Zähler
  91.       (s.u), die am oberen rechten Bildschirmrand angezeigt werden,
  92.       zurückgesetzt.
  93. RND:  Die momentan auch den Tisch befindlichen Bälle werden zufällig
  94.       verteilt.
  95. P:    (Power) Wie schon erwähnt, ist die Anfangsgeschwindigkeit der
  96.       Bälle proportional zur Länge der Linie bzw. des Queues. Da man
  97.       die Maus nicht über den Bildschirmrand positionieren kann, ist
  98.       die Länge dieser Linie bei Bällen, die nahe am Spielfeldrand
  99.       liegen, begrenzt. Deshalb kann man den Ball nicht auf die
  100.       Maximalgeschwindigkeit beschleunigen. Hier tritt nun das Gadget
  101.       "Power" in Aktion. Nach anklicken von "Power" wird die maximale
  102.       Queuelänge verringert, wobei aber weiterhin die Maximallänge der
  103.       maximalen Geschwindigkeit entspricht. Da in diesem Power-Modus
  104.       die Queuelänge geringer ist, ist natürlich auch die
  105.       Zielgenauigkeit eingeschränkt. Deshalb sollte man diesen Modus
  106.       durch erneutes anklicken des Powergadgets wieder verlassen,
  107.       sobald der Spielball weit genug von der Bande entfernt ist.
  108. <R R>:Mit diesen beiden Gadgets kann man die Reibung, die die Bälle
  109.       auf dem Tisch erfahren, einstellen. Die Zahl zwischen den beiden
  110.       R's gibt an, wie oft der Spielball bei einen maximalen Anstoß
  111.       den Tisch in horizontaler Richtung überqueren kann, bevor er
  112.       durch die Reibung zur Ruhe gekommen ist. Das linke Gadget
  113.       erniedrigt diese Zahl, das rechte erhöht sie bei jedem
  114.       Anklicken. Diese Zahl ist aber auf Werte zwischen 1 und 9
  115.       begrentzt.
  116. Digi: Für einige Spielversionen mag es nützlich sein, wenn die Bälle
  117.       Nummern tragen. Durch anklicken dieses Gadgets erhalten sie
  118.       welche, allerdings wird dadurch die Illusion, daß die Bälle
  119.       rollen, zerstört. Erneutes Anklicken dieses Gadgets löscht die
  120.       Nummern wieder. Auch hierbei ist ein Zugriff auf BillardTable
  121.       nötig.
  122. Pool: Dieses Programm unterstützt zwei Billardvarianten. Pool, bei
  123.       dem es darum geht, die Bälle in den Löchern zu versenken, und
  124.       eine andere Spielforn, bei der der Tisch keine Löcher hat, und
  125.       die Spieler versuchen, bestimmte Bälle auf eine bestimmte Weise
  126.       anzustoßen. Mit diesem Gadget kann man zwischen den beiden
  127.       Versionen umschalten. Dabei wird auf das Bild "BillardTable"
  128.       zugegriffen. Deshalb muß die entsprechende Diskette in einem
  129.       Laufwerk liegen.
  130. Undo: Hiermit können einige Aktionen rückgängig gemacht werden. Undo
  131.       wirkt auf den zuletzt ausgeführten Stoß, oder auf die Gadgets
  132.       Set, 0, 7, 11, 16, und RND. Insbesondere ist "Undo" beim Üben
  133.       nützlich, da man damit einfach verunglückte Stöße zurücknehmen
  134.       kann.
  135.  
  136. Zähler:
  137.   Auf dem oberen rechten Rahmem des Tisches werden 5 Zähler angezeigt,
  138.   die bei einigen Spielvarianten vielleicht nützlich sein können. Der
  139.   erste Zähler zeigt die Anzahl der gemachten Stöße an. An dieser Zahl
  140.   kann man bei zwei Spielern auch erkennen, wer gerade dran ist
  141.   (gerader oder ungerader Zählerstand). Der nächste Zähler summiert
  142.   alle Punkte, die bei geraden Stoßnummern erziehlt werden (Spieler 1
  143.   bei zwei Spielern), der andere die Punkte, die bei ungeraden
  144.   Stoßnummern erziehlt werden. Der nächste Zähler gibt die Summe der
  145.   beiden vorherigen an. (Mit Punkten ist die Nummer gemeint, die die
  146.   Bälle im Digi-Modus tragen, und man bekonnt sie gutgeschrieben, wenn
  147.   die Kugel in ein Loch fällt.) Der letzte Zähler zeigt an, wie viele
  148.   Bälle momentan auf dem Tisch liegen.
  149.  
  150. Rechte Maustaste:
  151.   Durch Drücken der rechten Maustaste ist es möglich, den
  152.   Billard-Screen in den Hintergrund zu bringen und dadurch die
  153.   Workbench wieder sichtbar zu machen, ohne das Spiel zu verlassen.
  154.  
  155. Jetzt zu den Spielregeln:
  156. ~~~~~~~~~~~~~~~~~~~~~~~~
  157. Da ich bislang noch nie echtes Billard gespielt habe, kann ich hierzu
  158. keine genauen Aussagen machen. Allerdings soll dieses Spiel auch gar
  159. nicht nach starren Regeln gespielt werden. Dieses Programm simuliert
  160. einen Billardtisch. Wie beim echten Billard können sie jederzeit eine
  161. beliebige Kugel anstoßen, Kugeln verschieben (mogeln), neue Stellungen
  162. aufbauen und einiges mehr. Wenn Sie Pool-Billard spielen, ist es
  163. vermutlich ihr Ziel, die Kugeln in den Löchern zu versenken. Die
  164. Kugeln direkt in die Löcher zu stoßen, wird ihnen wohl nach einiger
  165. Zeit zu leicht erscheinen. Dann sollte man vielleicht dazu übergehen,
  166. mit dem Spielball eine andere Kugel so anzustoßen, daß diese in ein
  167. Loch fällt. Weiter kann man sich das Spiel erschweren, indem man nur
  168. das Anstoßen einer bestimmten Kugel zuläßt und eventuell auch noch
  169. ansagt, welche Kugel man in welchem Loch versenken will. Bei der
  170. anderen Version ohne Löcher geht es darum, daß der Spielball, bevor er
  171. einen anderen Ball trifft, zuvor mehrmals die Bande berührt haben muß.
  172. Beispielsweise spielen zwei Spieler mit drei Bällen. Jeder Spieler hat
  173. einen eigenen Ball und muß diesen so anstoßen, daß er mindestens ein
  174. oder zwei mal die Bande berührt, bevor er den dritten Ball trifft.
  175. Zwei Spieler könnten auch folgendermaßem die Poolvariante Spielen: 16
  176. Bälle werden durch anklicken von "16" und "RND" auf dem Tisch
  177. verteilt. Dem einen Spieler gehören die Bälle mit geraden Nummern, dem
  178. anderen die mit ungeraden Nummern. Die Spieler versuchen nun
  179. abwechselnd, die Bälle des anderen Spielers in die Löcher zu stoßen.
  180. Man kann sich also beliebige Spielregeln ausdenken und nach diesen
  181. dann mit beliebig vielen Personen spielen.
  182.  
  183. Jetzt noch einige Hinweise: Das Spiel ist voll multitaskingtauglich.
  184. Allerdings wird, wenn viele Bälle eng beieinander liegen, für die
  185. Simulation der Ballbewegung sehr viel Rechenzeit verbraucht. Dies
  186. erkennt man daran, daß die grafische Darstellung der Bälle etwas
  187. ruckartig wird, und das andere Programme stark abgebremmst werden. Das
  188. Spiel benutzt alle 4 Soundkanäle des Amiga. Da der Sound aber für das
  189. Spiel nicht wichtig ist, werden die Soundkanäle nur mit einer geringen
  190. Priorität angefordert. Deshalb können die Soundkanäle von anderen,
  191. gleichzeitig laufenden Programmen dem Billardspiel entzogen werden.
  192. Sie können dann entweder mit weniger Billard-Sound weiterspielen, oder
  193. das andere Programm und Billard beenden und dann Billard wieder neu
  194. starten. Der Hintergrund des Spieles besteht aus einem ILBM-Bild mit
  195. Namen BillardTable. Sie können es mit jedem Malprogramm bearbeiten.
  196. Insbesondere kann man die Farben der Bälle oder des Tisches verändern
  197. oder auch die Bälle anders beschriften, mit einem Muster versehen usw.
  198. Allerdings darf die Position der Bälle im Bild nicht geändert werden,
  199. da sie sonst vom Programm nicht gefunden werden. Beim echten Billard
  200. können die Bälle auch einen Spin bzw. Drall haben, was zu gekrümmten
  201. Bahnen und anderen Stoßwinkeln führt. Das ist in dieser Simulation
  202. nicht berücksichtigt.
  203.  
  204. Zum Schluß noch einige Hinweise für Programmierer: Das Programm ist in
  205. Modula geschrieben und mit dem  Compiler M2Amiga V3.3d compiliert worden.
  206. Das Programm benutzt neben den Standardmodulen mein Modul
  207. ILBMHandler1.1, welches wiederum das Modul TurboFiles verwendet.
  208. TurboFiles ist auf Amok#24 veröffentlicht worden. Die alte, langsame
  209. Version vom ILBMHandler ist auf Amok#17 erschienen. Obwohl ich die 50%
  210. schnellere und erweiterte Version 1.1 bereits im July 89 an einen der
  211. AMOK-Herausgeber (Friedtjof Siebert) geschickt hatte, ist sie bisher
  212. leider nicht veröffentlicht worden, aber mit der alten Version müßte
  213. es auch funktionieren. Ausserdem benutze ich MemSystem von Nicolas
  214. Benezan. Es ist auf AMOK#16 enthalten, allergings mußte ich es etwas
  215. an die Compilerversion 3.3 anpassen. (Ich habe die Definition "TYPE
  216. LevelKey=LONGINT" von Implementations- ins Definitionsmodul verlagert.)
  217. Für die Bewegung der Bälle ist die Prozedur Control verantwortlich.
  218. Sie wird als VBlank-Interrupthandler installiert. Deshalb wird sie
  219. garantiert 50 mal pro Sekunde aufgerufen, und die Bewegung der Bälle
  220. kann in Echtzeit erfolgen, auch wenn nicht alle Bewegungsphasen auf
  221. dem Bildschirm dargestellt werden. Die Darstellung der Bälle geschieht
  222. als Bobs. Zuerst hatte ich mit VSprites experimentiert, aber bei der
  223. Benutzung von verschiedenen Farben und mehr als 8 Sprites bekommt man
  224. merkwürdige Effekte, z.B. das verschwinden von Sprites oder
  225. Farbfehler. Die Bobs verhalten sich dagegen sehr ordentlich, allerdings
  226. sind sie nicht besonders schnell. Bei einem Screen mit 32 Farben und
  227. 16 Bobs mit einer Größe von 16x16 Pixel kann man die Bobs mit der
  228. Funktion DrawGList maximal 10 mal pro Sekunde darstellen lassen. Da
  229. für die Kollisionsabfrage, die ich direkt über die Position der Bälle
  230. vornehme, noch viel Rechenzeit verbraucht wird, kann man die Bälle
  231. leider nur wenige Male pro Sekunde zeichnen lassen, was zu etwas
  232. ruckartigen Bewegungen führt. Eine Verbesserung könnte man sicher
  233. erziehlen, wenn man die Prozedur Control in Assebler übersetzt, aber
  234. erstens ist es nicht ganz einfach, von Assembler aus auf die globalen
  235. Variablen zuzugreifen, und zweitens ist es nicht sicher, ob es sich
  236. wirklich lohnt, da die meiste Zeit wohl für FFP-Berechnungen
  237. verbraucht wird. Andere Optimierungen, wie Zugriff auf Arrayelemente
  238. über Pointer statt über Index habe ich bereits ausgeschöpft. Die
  239. Prozedur Control ist in dieser Form sicher unverständlich. Die
  240. Herleiting der Formeln füllen einige DIN-A4 Seiten; wer sie haben
  241. möchte, kann Sie bei mir anfordern. (Die Bewegungsgleichungen beruhen
  242. natürlich darauf, daß bei Stößen Energie- und Impulserhaltung gilt,
  243. und daß auf die Kugeln während der Bewegung eine konstante
  244. Reibungskraft entgegen der Bewegungsrichtung wirkt.) Die übrigen
  245. Prozeduren sollten eigentlich verständlich sein und können eventuell
  246. verbessert oder erweitert werden.
  247.  
  248. Stefan Salewski, 16.12.89
  249.  
  250.  
  251.